Amazon QuickSight で任意の 2 日間のデータを比較する方法
QuickSight を使用してデータ分析していると、任意の 2 点間でデータを比較したいことがよくあります。
本記事では、ユーザーが任意に選択した 2 つの日付のデータを比較する方法を紹介します。
目的
固定の前日比や前年比ではなくユーザーが任意に選択した 2 点間の値の比較を実現します。
背景
過去に前年同月比を求めるグラフ、テーブルの作成例を紹介しました。
これらの方法では、作成者側が指定した n 日(年)前の値との比較となり、固定した間隔との比較ができませんでした。
今回は、比較する日付をユーザー側で動的に変更可能にすることを目指します。
サンプルデータ
以下のようなシンプルなサンプルデータを用意しました。
日付、部屋タイプ、予約数の 3 列からなるデータセットです。
作り方
選択した任意の日付 A と、日付 B の値を比較するための計算フィールドでsumif
を使うのがポイントです。
1. パラメータ作成
比較したい 2 つの日付を選択できるよう、パラメータを作成します。
「開始日」と「終了日」の 2 つのパラメータを設定します。
同様に「終了日」のパラメータを作成します。
2. 計算フィールド作成
sumIf()
で対象の日付の値を持ってきます。足し算したいわけではなく値を参照するために、periodOverPeriodLastValue
の代替えとして使ってます。
後ほど引き算して差分を出す都合、null
だった場合は0
と返すようにcoalesce()
関数を併用します。
coalesce(sumIf([数値のフィールド名], [日付のフィールド名] = [開始日 or 終了日のパラメータ名]) ,0)
パラメータ BeginDate に対応する計算フィールドの作成例は以下です。
coalesce(sumIf(予約数, 日付 = ${BeginDate}) ,0)
同様に終了日に対応する計算フィールドを作成します。
3. 差分を計算
2 つの日付間の差分を計算するフィールドを作成します。作成した計算フィールド同士の引き算をします。
{作成した計算フィールド1} - {作成した計算フィールド2}
計算フィールドの作成例は以下です。
{対象日A(開始日)} - {対象日B(終了日)}
4. テーブル表示
作成した計算フィールドを使用してテーブルを作成します。
これで、パラメータで選択した 2 つの日付に該当する数値を比較した結果を表示できるテーブルが完成しました。
まとめ
この方法を使用することで、固定の前日比や前年比ではなくユーザーが任意に選択した 2 点間の比較が可能になります。
periodOverPeriod
関数シリーズでは無理があったため、sumIf()
で同様の機能を実現できました。
実際のデータセットではより複雑な状況が想定されますので、適宜調整してください。
おわりに
periodOverPeriod
関数があるのだからと固執し、長らく任意に選択した 2 点間の数値比較ができなく悲しみに暮れていました。
諦めて他の関数で考えた結果が本記事の内容です。